<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Class template close_at_tolerance</title>
<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Test">
<link rel="up" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html" title="Header &lt;boost/test/tools/floating_point_comparison.hpp&gt;">
<link rel="prev" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html" title="Header &lt;boost/test/tools/floating_point_comparison.hpp&gt;">
<link rel="next" href="is_abstract_class_idm46146.html" title="Class template is_abstract_class_or_function">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_abstract_class_idm46146.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="boost.math.fpc.close_at_tolerance"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Class template close_at_tolerance</span></h2>
<p>boost::math::fpc::close_at_tolerance — Predicate for comparing floating point numbers. </p>
</div>
<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html" title="Header &lt;boost/test/tools/floating_point_comparison.hpp&gt;">boost/test/tools/floating_point_comparison.hpp</a>&gt;

</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> FPT<span class="special">&gt;</span> 
<span class="keyword">class</span> <a class="link" href="close_at_tolerance.html" title="Class template close_at_tolerance">close_at_tolerance</a> <span class="special">{</span>
<span class="keyword">public</span><span class="special">:</span>
  <span class="comment">// types</span>
  <span class="keyword">typedef</span> <span class="keyword">bool</span> <a name="boost.math.fpc.close_at_tolerance.result_type"></a><span class="identifier">result_type</span><span class="special">;</span>

  <span class="comment">// <a class="link" href="close_at_tolerance.html#boost.math.fpc.close_at_toleranceconstruct-copy-destruct">construct/copy/destruct</a></span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ToleranceType<span class="special">&gt;</span> 
    <span class="keyword">explicit</span> <a class="link" href="close_at_tolerance.html#idm46138-bb"><span class="identifier">close_at_tolerance</span></a><span class="special">(</span><span class="identifier">ToleranceType</span><span class="special">,</span> <span class="identifier">fpc</span><span class="special">::</span><span class="identifier">strength</span> <span class="special">=</span> <span class="identifier">FPC_STRONG</span><span class="special">)</span><span class="special">;</span>

  <span class="comment">// <a class="link" href="close_at_tolerance.html#idm46107-bb">public member functions</a></span>
  <span class="identifier">FPT</span> <a class="link" href="close_at_tolerance.html#idm46108-bb"><span class="identifier">fraction_tolerance</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  <span class="identifier">fpc</span><span class="special">::</span><span class="identifier">strength</span> <a class="link" href="close_at_tolerance.html#idm46111-bb"><span class="identifier">strength</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  <span class="identifier">FPT</span> <a class="link" href="close_at_tolerance.html#idm46114-bb"><span class="identifier">tested_rel_diff</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  <span class="keyword">bool</span> <a class="link" href="close_at_tolerance.html#idm46117-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">FPT</span><span class="special">,</span> <span class="identifier">FPT</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span></pre></div>
<div class="refsect1">
<a name="idm56975"></a><h2>Description</h2>
<p>This predicate is used to compare floating point numbers. In addition the comparison produces maximum related difference, which can be used to generate detailed error message The methods for comparing floating points are detailed in the documentation. The method is chosen by the boost::math::fpc::strength given at construction.</p>
<p>This predicate is not suitable for comparing to 0 or to infinity. </p>
<div class="refsect2">
<a name="idm56979"></a><h3>
<a name="boost.math.fpc.close_at_toleranceconstruct-copy-destruct"></a><code class="computeroutput">close_at_tolerance</code> 
        public
       construct/copy/destruct</h3>
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ToleranceType<span class="special">&gt;</span> 
  <span class="keyword">explicit</span> <a name="idm46138-bb"></a><span class="identifier">close_at_tolerance</span><span class="special">(</span><span class="identifier">ToleranceType</span> tolerance<span class="special">,</span> 
                              <span class="identifier">fpc</span><span class="special">::</span><span class="identifier">strength</span> fpc_strength <span class="special">=</span> <span class="identifier">FPC_STRONG</span><span class="special">)</span><span class="special">;</span></pre></li></ol></div>
</div>
<div class="refsect2">
<a name="idm57004"></a><h3>
<a name="idm46107-bb"></a><code class="computeroutput">close_at_tolerance</code> public member functions</h3>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<pre class="literallayout"><span class="identifier">FPT</span> <a name="idm46108-bb"></a><span class="identifier">fraction_tolerance</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Returns the tolerance. </li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">fpc</span><span class="special">::</span><span class="identifier">strength</span> <a name="idm46111-bb"></a><span class="identifier">strength</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Returns the comparison method. </li>
<li class="listitem">
<pre class="literallayout"><span class="identifier">FPT</span> <a name="idm46114-bb"></a><span class="identifier">tested_rel_diff</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Returns the failing fraction. </li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">bool</span> <a name="idm46117-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">FPT</span> left<span class="special">,</span> <span class="identifier">FPT</span> right<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
<p>Compares two floating point numbers a and b such that their "left" relative difference |a-b|/a and/or "right" relative difference |a-b|/b does not exceed specified relative (fraction) tolerance.</p>
<p>
What is reported by <code class="computeroutput">tested_rel_diff</code> in case of failure depends on the comparison method:</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>for <code class="computeroutput">FPC_STRONG:</code> the max of the two fractions</p></li>
<li class="listitem"><p>for <code class="computeroutput">FPC_WEAK:</code> the min of the two fractions The rationale behind is to report the tolerance to set in order to make a test pass. </p></li>
</ul></div>
<p>
</p>
<div class="variablelist"><table border="0" class="variablelist compact">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody><tr>
<td><p><span class="term">Parameters:</span></p></td>
<td><div class="variablelist"><table border="0" class="variablelist compact">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term"><code class="computeroutput">left</code></span></p></td>
<td><p>first floating point number to be compared </p></td>
</tr>
<tr>
<td><p><span class="term"><code class="computeroutput">right</code></span></p></td>
<td><p>second floating point number to be compared</p></td>
</tr>
</tbody>
</table></div></td>
</tr></tbody>
</table></div>
</li>
</ol></div>
</div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2001-2022 Boost.Test contributors<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_abstract_class_idm46146.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
